import 'package:flutter/services.dart';

class NumericTextInputFormatter extends TextInputFormatter {
  @override
  TextEditingValue formatEditUpdate(
      TextEditingValue oldValue,
      TextEditingValue newValue,
      ) {
    final String newText = newValue.text;

    // 允许空输入
    if (newText.isEmpty) return newValue;

    // 检查是否包含非法字符（非数字或小数点）
    if (!RegExp(r'^[\d\.]*$').hasMatch(newText)) return oldValue;

    // 禁止以小数点开头
    if (newText.startsWith('.')) return oldValue;

    // 禁止多个小数点
    if (newText.split('.').length > 2) return oldValue;

    return newValue;
  }
}